<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <script>
        var arr = [1, 3, , 5, 89, , 45, 3, 3, 78]
        var arr1 = [2, 3, , 5, 9, 7, 12, 2, 2, 78]

        // arr.forEach(function (items, index, arr) {
        //     /*  item:都表示数组的每一项数据
        //      index：数据的索引
        //      array：原始数组 */
        //     arr1.forEach(function (items, index, arr1) {
        //         if (arr[index] === arr1[index]) {
        //             sum.push(arr[index])

        //         }
        //     })
        // })
        // console.log(sum)

        // function noRepeat(array) {
        //     var newArr = [];

        //     // 去重 
        //     // 循环的把原始属数组的数据添加到新数组中
        //     outer: for (var i = 0; i < array.length; i++) {
        //         // 如果新数组中已经存在的数据，那么久不需要往新数组添加此数据
        //         // 用当前的这个数据与新数组中每一个元素比较
        //         for (var j = 0; j < newArr.length; j++) {
        //             if (array[i] === newArr[j]) {
        //                 // 如果原始数组的数据 跟新数组的数据一样的 ，说明新数组已经存在这个数据了，就不需要往新数组添加此数据
        //                 // 不需要往新数组中添加这条数据， 需要进行下一次与数据的匹配
        //                 // 拿到原始数组的下一个数据  跳过外层循环的本次循环 进入下一次外层循环
        //                 continue outer
        //             }
        //         }
        //         newArr.push(array[i])

        //     }

        //     return newArr
        // }
        // var res = noRepeat(sum)
        // console.log(res)

        var res = arr.filter(function (item, index) {
            return (arr1.indexOf(item) !== -1)
        });
        var res1 = res.reduce(function (pre, cur) {
            //给pre 赋值一个[]
            /*  if (pre.indexOf(cur) === -1) {
                 // 说明pre数组中不存在 cur 这个数据，需要把cur添加到 pre 数组中
                 // pre.push(cur)
                 // pre.concat(cur)
                 return pre.concat(cur)
             } else {
                 return pre
             } */
            // return (pre.indexOf(cur) === -1) ? pre.push(cur) : pre 
            // 不能使用push push 的返回值是一个数组的长度 下一次的pre就是数组的长度 并不是一个数组

            //  pre.indexOf is not a function出现这个错误 
            // indexOf这个方法名写错
            // pre 没有这个方法
            return (pre.indexOf(cur) === -1) ? pre.concat(cur) : pre
        }, [])
        console.log(res1)
    </script>
</body>

</html>